﻿#ifndef UDP_EXPORT_H
#define UDP_EXPORT_H

#include "common.h"

typedef struct  udp_push_client__t_*  udp_push_client__t ;

#ifdef _WIN32
void lib_load(void);
void lib_unload(void) ;
#else // _WIN32
static void __attribute__((constructor)) lib_load(void);
static void __attribute__((destructor)) lib_unload(void) ;
#endif // !_WIN32

// 创建实例
MVAPI(udp_push_client__t) udp_create(const char* id, const char* host, const int32_t port, const uint8_t priority);
// 绑定本机ip地址，多ip地址时可绑定
MVAPI(void) udp_bind_local_ip(udp_push_client__t inst, const char* ip_addr);
// 开始通信
MVAPI(bool) udp_start(udp_push_client__t inst, mv::status_callback status_callback, mv::message_callback msg_callback);
// 是否在运行中
MVAPI(mv::run_status) udp_run_status(udp_push_client__t inst);
// 是否已建立连接
MVAPI(mv::connect_status) udp_connect_status(udp_push_client__t inst);
// 连接状态
MVAPI(mv::connect_status) udp_check_connect_status(udp_push_client__t inst, mv::connect_status desired_status, int32_t milliseconds_timeout);
// 发送消息
MVAPI(bool) udp_send_msg(const char* id, uint8_t* msg, int32_t length);
// 停止通信
MVAPI(void) udp_stop(udp_push_client__t inst);
// 销毁实例
MVAPI(void) udp_destroy(udp_push_client__t inst);

#endif // UDP_EXPORT_H
